const fs = require('fs');
const path = require('path');
const request = require('request');
const cheerio = require('cheerio');

const url = 'http://store.lining.com/shop/goodsCate-sale,desc,1,15s15_122,15_122_m,15_122_ls15_122_10,15_122_10_m,15_122_10_l-0-0-15_122_10,15_122_10_m,15_122_10_l-0s0-0-0-min,max-0.html';

// 1.向目标地址发送请求
request(url,(err,res,body)=>{

    const goodlist = [];

    // 2.jq化
    let $ = cheerio.load(body);
    // 3.获取目标节点
    $('.cate_search_content').find('.selItem').each((idx,item)=>{
        // 获取所需数据
        const $item = $(item);
        const name = $item.find('.hgoodsName').text();
        const price = $item.find('.price').text().match(/[\d\.]+/)[0];
        const imgurl = $item.find('.selMainPic img').attr('orginalsrc');        // 直接获取src会返回gif格式图片，不是需要的格式图片，另取属性获取

        // 4.爬取图片
        const filename = path.basename(imgurl)                           // 返回路径的最后一部分
        const fileStream = fs.createWriteStream('./img/'+filename)       // 创建可写流，注意所写文件必须存在
        request(imgurl).pipe(fileStream)                                 // 请求图片并以流的形式流入指定位置

        // 数据重构
        const good = {
            name,
            price,
            imgurl:'img/'+filename
        }

        // 插入数据
        goodlist.push(good);
    })
})